// pages/user/index.js
const app = getApp();
const userService = require('../../services/user');
const staffService = require('../../services/staff');
const petService = require('../../services/pet');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    isLogin: false,
    userInfo: null,
    staffInfo: null,
    userType: null, // 1-普通用户，2-医护人员
    pets: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.checkLoginStatus();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.checkLoginStatus();
    if (this.data.isLogin && this.data.userType === 1) {
      this.loadUserPets();
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const isLogin = app.checkLogin();
    const userType = app.getUserType();
    
    // 根据用户类型获取不同的用户信息
    let userInfo = null;
    let staffInfo = null;
    
    if (isLogin) {
      if (userType === 1) {
        userInfo = app.globalData.userInfo;
      } else if (userType === 2) {
        staffInfo = app.globalData.staffInfo;
      }
    }
    
    this.setData({
      isLogin,
      userType,
      userInfo,
      staffInfo
    });
  },

  /**
   * 加载用户宠物列表
   */
  loadUserPets() {
    // 只有普通用户才加载宠物列表
    if (this.data.userType !== 1) return;
    
    wx.showLoading({
      title: '加载中...',
    });
    
    petService.getPetList(1, 5)
      .then(res => {
        let petList = res.records || [];
        
        // 处理宠物照片字段，确保显示正确的照片URL
        petList = petList.map(pet => {
          return {
            ...pet,
            avatar: pet.photo || '/static/images/default-pet.png' // 使用photo字段作为头像
          };
        });
        
        console.log('处理后的宠物列表:', petList);
        
        this.setData({
          pets: petList
        });
        wx.hideLoading();
      })
      .catch(err => {
        console.error('获取宠物列表失败', err);
        wx.hideLoading();
        wx.showToast({
          title: '获取宠物信息失败',
          icon: 'none'
        });
      });
  },

  /**
   * 跳转到登录页面
   */
  navigateToLogin() {
    wx.navigateTo({
      url: '/pages/login/login'
    });
  },

  /**
   * 跳转到宠物列表页面（仅普通用户）
   */
  navigateToPetList() {
    if (!this.data.isLogin) {
      this.navigateToLogin();
      return;
    }
    
    // 医护人员不能访问宠物列表
    if (this.data.userType === 2) {
      wx.showToast({
        title: '医护人员无法访问此功能',
        icon: 'none'
      });
      return;
    }
    
    // 修改为正确的页面路径
    wx.navigateTo({
      url: '/pages/pet/index'
    });
  },

  /**
   * 跳转到添加宠物页面（仅普通用户）
   */
  navigateToAddPet(e) {
    if (!this.data.isLogin) {
      this.navigateToLogin();
      return;
    }
    
    // 医护人员不能添加宠物
    if (this.data.userType === 2) {
      wx.showToast({
        title: '医护人员无法访问此功能',
        icon: 'none'
      });
      return;
    }
    
    // 安全地阻止事件冒泡
    if (e && typeof e.stopPropagation === 'function') {
      e.stopPropagation();
    }
    
    wx.navigateTo({
      url: '/pages/pet/add'
    });
  },

  /**
   * 跳转到预约列表页面
   */
  navigateToAppointments() {
    if (!this.data.isLogin) {
      this.navigateToLogin();
      return;
    }
    
    // 根据用户类型导航到不同的预约页面
    if (this.data.userType === 1) {
      // 普通用户查看自己的预约
      wx.switchTab({
        url: '/pages/appointment/index'
      });
    } else if (this.data.userType === 2) {
      // 医护人员查看预约管理页面
      wx.navigateTo({
        url: '/pages/staff/appointments/index'
      });
    }
  },

  /**
   * 跳转到咨询列表页面
   */
  navigateToConsults() {
    if (!this.data.isLogin) {
      this.navigateToLogin();
      return;
    }
    
    // 根据用户类型导航到不同的咨询页面
    if (this.data.userType === 1) {
      // 普通用户查看自己的咨询
      wx.switchTab({
        url: '/pages/consult/index'
      });
    } else if (this.data.userType === 2) {
      // 医护人员查看咨询管理页面
      wx.navigateTo({
        url: '/pages/staff/consults/index'
      });
    }
  },

  /**
   * 跳转到健康记录页面（仅普通用户）或工作排班（医护人员）
   */
  navigateToMedicalRecords() {
    if (!this.data.isLogin) {
      this.navigateToLogin();
      return;
    }
    
    // 修正URL路径 - 检查schedule/index是否存在
    // 如果不存在，则所有用户都导航到medical/index
    const url = this.data.userType === 1 
      ? '/pages/medical/index'  // 普通用户查看健康记录
      : '/pages/medical/index';  // 医护人员查看工作排班
    
    wx.navigateTo({
      url: url
    });
  },

  /**
   * 跳转到设置页面
   */
  navigateToSettings() {
    // 检查settings/index是否存在
    wx.showToast({
      title: '设置功能即将上线',
      icon: 'none'
    });
    // wx.navigateTo({
    //   url: '/pages/settings/index'
    // });
  },

  /**
   * 跳转到关于我们页面
   */
  navigateToAbout() {
    // 检查about/index是否存在
    wx.showToast({
      title: '关于我们功能即将上线',
      icon: 'none'
    });
    // wx.navigateTo({
    //   url: '/pages/about/index'
    // });
  },

  /**
   * 退出登录
   */
  logout() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          app.clearUserInfo();
          this.setData({
            isLogin: false,
            userInfo: null,
            staffInfo: null,
            userType: null,
            pets: []
          });
          
          wx.showToast({
            title: '退出登录成功',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    if (this.data.isLogin) {
      this.checkLoginStatus();
      if (this.data.userType === 1) {
        this.loadUserPets();
      }
      setTimeout(() => {
        wx.stopPullDownRefresh();
      }, 1000);
    } else {
      wx.stopPullDownRefresh();
    }
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '宠物医院 - 专业的宠物医疗平台',
      path: '/pages/index/index'
    };
  }
})